﻿#define _CRT_SECURE_NO_WARNINGS  

//#include <stdio.h>
//int main()
//{
//	char ch = 'x';
//	char* p = &ch;
//	*p = 'y';
//	printf("%c\n", ch);
//	return 0;
//}

//int main()
//{
//	char str[] = "Hello World";
//	const char* p = str;
//	printf("%s\n", p);
//	return 0;
//}


//int(*p1)[10];
//int* p2[10];

//#include <stdio.h>
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int(*p1)[10] = &arr;
//	return 0;
//}

#include <stdio.h>
//void Print(int arr[3][5], int x, int y)//x为行数，y为列数
//{
//	int i = 0;
//	int j = 0;
//	for (i = 0; i < x; i++)
//	{
//		for (j = 0; j < y; j++)
//		{
//			printf("%d ", arr[i][j]);
//		}
//		printf("\n");
//	}
//}
//void Print(int (*p)[5], int x, int y)//x为行数，y为列数
//{
//	int i = 0;
//	int j = 0;
//	for (i = 0; i < x; i++)
//	{
//		for (j = 0; j < y; j++)
//		{
//			printf("%d ", *(*(p+i)+j));
//		}
//		printf("\n");
//	}
//}
//int main()
//{
//	int arr[3][5] = { {1,2,3,4,5},{2,3,4,5,6},{3,4,5,6,7} };
//	Print(arr, 3, 5);
//	return 0;
//}


//#include <stdio.h>
//#include <stdlib.h>
//int main()
//{
//	int(*arr)[5];
//	arr = (int(*)[5])malloc(3 * sizeof(*arr));
//	if (arr == NULL)
//	{
//		perror("malloc");
//		return 1;
//	}
//	for (int i = 0; i < 3; i++)
//	{
//		for (int j = 0; j < 5; j++)
//		{
//			arr[i][j] = i * 2 + j * 3;
//			/**(*(arr + i) + j) = i * 2 + j * 3;*/
//		}
//	}
//	for (int i = 0; i < 3; i++)
//	{
//		for (int j = 0; j < 5; j++)
//		{
//			printf("%d ", arr[i][j]);
//		}
//		printf("\n");
//	}
//	free(arr);
//	arr = NULL;
//	return 0;
//}

//#include <stdio.h>
//int Add(int x, int y)
//{
//	return x + y;
//}
//int main()
//{
//	int(*p)(int, int) = Add;
//	int c = p(3, 5);
//	printf("%d ", c);
//	return 0;
//}

//typedef long long ll;
//ll c = 0;
//将long long类型重命名为ll 创建变量时可以直接使用ll

//
//int (*p1[3])();
//int* p2[3]();
//int (*)() p3[3];

#include <stdio.h>
int Add(int a, int b)
{
	return a + b;
}
int Sub(int a, int b)
{
	return a - b;
}
int Mul(int a, int b)
{
	return a * b;
}
int Div(int a, int b)
{
	return a / b;
}
int main()
{
	int x, y;
	int input = 1;
	int ret = 0;
	int(*p[5])(int x, int y) = { 0, Add, Sub, Mul, Div };
	do
	{
		printf("*************************\n");
		printf("  1:add           2:sub  \n");
		printf("  3:mul           4:div  \n");
		printf("          0:exit         \n");
		printf("*************************\n");
		printf("请选择：");
		scanf("%d", &input);
		if ((input <= 4 && input >= 1))
		{
			printf("输⼊操作数：");
			scanf("%d %d", &x, &y);
			ret = (*p[input])(x, y);
			printf("ret = %d\n", ret);
		}
		else if (input == 0)
		{
			printf("退出计算器\n");
		}
		else
		{
			printf("输⼊有误\n");
		}
	} while (input);
	return 0;
}